home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Spanish Scene 1
/
SpanishScene1.iso
/
spanish pack n°1 by llfb
/
--llfb--
/
programas
/
sources1.dms
/
sources1.adf
/
SOURCES
/
Vectores
/
TransformingDotVector.ASM
< prev
Wrap
Assembly Source File
|
1996-06-04
|
12KB
|
446 lines
;DOTVECTOR BY LADO OF FI-RE CREW IN 1992 !
; org $25000
; load $25000
Section Roman,code_c
; >extern 'DF0:sources/raytr.dat',sinus
j lea $30000,a0 ;memoria torlese
lo clr.l (a0)+
cmp.l #$60000,a0
bcs lo
move.w #400,d7 ;make screen clear rutin
lea cleen(pc),a0
db move.l code(pc),(a0)+
dbf d7,db
move.w #$4e75,(a0) ;RTS a vegere
lea row(pc),a0
moveq #0,d0
move.w #$d1,d7
nmi move.w d0,(a0)+
add.w #$50,d0
dbf d7,nmi
lea $dff000,a6 ;custom
wr move.l 4(a6),d0
lsr.l #8,d0
cmp.w #$138,d0
bne wr
move.w #$7fff,$96(a6) ;clear DMACON
move.w #$7fff,$9a(a6) ;clear INTENA
move.l #copper,$84(a6)
clr.w $8a(a6) ;start copper
move.w #$87d0,$96(a6) ;DMACON
move.w #$c010,$9a(a6)
h1 bsr wait ;waitblitter
h2 move.l 4(a6),d0 ;waitraster
lsr.l #8,d0
cmp.w #$d0,d0
bne h2
bsr filler
bsr chcor
btst #6,$bfe001
bne h1
bsr wait
move.w #$7fff,$96(a6)
move.w #$7fff,$9a(a6)
clr.w $88(a6) ;start original copper
move.w #$87f0,$96(a6)
move.w #$e02c,$9a(a6)
clr.l d0
rts ;END
filler add.w #2,addx ;xszog novelese
and.w #$1ff,addx
add.w #2,addy ;yszog novelese
and.w #$1ff,addy
add.w #0,addz ;zszog novelese
and.w #$1ff,addz
lea coords0(pc),a0 ;pontok x,y,z koordinatai
lea sinus(pc),a1 ;sinus ertekek
lea $80(a1),a3 ;cosinus ertekek
lea tarolo(pc),a2 ;2D x,y letarolasa
lea addx(pc),a4 ;szogek
move.l #16-1,d7 ;pontok szama !!!!!!!!!!!!!!!!!!!!!!!!!!!!
h3 movem.w (a0)+,d0/d1/d6 ;x,y,z
move.w 4(a4),d5 ;Zszog
bsr calcul ;Z-rotation
move.w d0,d6 ;X tarolasa
move.w d3,d0 ;Y
move.w (a4),d5 ;Xszog
bsr calcul ;X-rotation
move.w d0,d6 ;uj Y tarolasa
move.w d3,d0 ;Z
move.w 2(a4),d5 ;Yszog
bsr calcul ;Y-rotation
exg d0,d3 ;X csere Z-vel Z=d3
moveq #12,d6 ;lekepezes 2D-re
move.w #$650,d2
sub.w d3,d2 ;$444-Z
muls d2,d0 ;z'*x
asr.l d6,d0 ;z'*x/2048=2D X
muls d2,d1 ;z'*y
asr.l d6,d1 ;z'*y/2048=2D Y
add.w #150,d0 ;X=X+150 kozepre a kepernyon
add.w #95,d1 ;Y=Y+100
move.w d0,(a2)+ ;2D X tarolasa
move.w d1,(a2)+ ;2D Y tarolasa
dbf d7,h3 ;14-szer
eor.w #$8000,erno+2 ;kepernyo csere
eor.w #$8000,copscr ;csere a copperben is
eor.w #$8000,copscr+4
movem.l null(pc),d0-d7/a1-a6 ;regiszterek nullazasa
move.l erno(pc),a0
lea $3e00(a0),a0
bsr cleen
lea $dff000,a6
move.w #14,wor ;6 lap van !!!!!!!!!!!!!!!!!!!!!!!!!!!
lea tarolo(pc),a1 ;2D x,y coords
lea meghat(pc),a4 ;pontok structuraja
l7 lea tarol2(pc),a5 ;tarolo
move.l erno(pc),a2 ;aktualis kepernyo
movem.w (a4),d0/d1/d2 ;lathatosag eldontese
move.w (a1,d1.w),d3 ;x1
sub.w (a1,d0.w),d3 ;X1-X0
move.w 2(a1,d2.w),d4 ;y2
sub.w 2(a1,d1.w),d4 ;Y2-Y1
move.w 2(a1,d1.w),d5 ;y1
sub.w 2(a1,d0.w),d5 ;Y1-Y0
move.w (a1,d2.w),d6 ;x2
sub.w (a1,d1.w),d6 ;X2-X1
mulu d4,d3 ;(y2-y1)(x1-x0)=d3
mulu d6,d5 ;(y1-y0)(x2-x1)=d5
sub.w d5,d3
bmi vakon ;nem latszik a lap
add.l #$28,a2 ;akkor masik kepernyo
vakon moveq #3,d7 ;4-szer
allit move.w (a4)+,d0 ;pont
move.l (a1,d0.w),(a5)+ ;4 pont masolasa
dbf d7,allit
lea tarol2(pc),a0
lea row(pc),a3
moveq #3,d7 ;/8
move.w (a0),d0 ;x1
sub.w 4(a0),d0 ;x1-x2
swap d0
clr.w d0
asr.l d7,d0
move.w 2(a0),d1 ;y1
sub.w 6(a0),d1 ;y1-y2
swap d1
clr.w d1
asr.l d7,d1
move.w 8(a0),d2 ;x3
sub.w 4(a0),d2 ;x3-x2
swap d2
clr.w d2
asr.l d7,d2
move.w 10(a0),d3 ;y3
sub.w 6(a0),d3 ;y3-y2
swap d3
clr.w d3
asr.l d7,d3
move.w 12(a0),d4 ;x4
sub.w 8(a0),d4 ;x4-x3
swap d4
clr.w d4
asr.l d7,d4
move.w 14(a0),d5 ;y4
sub.w 10(a0),d5 ;y4-y3
swap d5
clr.w d5
asr.l d7,d5
sub.l d0,d4 ;(x4-x3)-(x1-x2)
asr.l d7,d4
move.l d4,plc
sub.l d1,d5 ;(y4-y3)-(y1-y2)
asr.l d7,d5
move.l d5,plc+4
move.w 4(a0),d6 ;x2
swap d6
clr.w d6
move.l d6,plc+8
move.w 6(a0),d6 ;y2
swap d6
clr.w d6
move.l d6,plc+12
move.l d2,plc+16
move.l d3,plc+20
bsr wait
move.w #8,wor+2
l1 moveq #8,d7
move.l plc+8(pc),d2 ;kezdo x
move.l plc+12(pc),d3 ;kezdo y
l2 move.l d2,d4
swap d4
move.l d3,d5
swap d5
move.w d4,d6 ;x2
lsr.w #3,d4 ;x2/8=oszlop
not.b d6 ;a byteon belul hanyadik bitet kell setbe
add.w d5,d5 ;word
add.w (a3,d5.w),d4 ;sor
bset d6,(a2,d4.w) ;bit beallitasa 1-be
add.l d0,d2 ;x=x+x1-x2
add.l d1,d3 ;y=y+y1-y2
dbf d7,l2
add.l plc(pc),d0
add.l plc+4(pc),d1
move.l plc+16(pc),d6
add.l d6,plc+8
move.l plc+20(pc),d6
add.l d6,plc+12
subq.w #1,wor+2
bpl l1
subq.w #1,wor
bne l7
rts
calcul move.w (a3,d5.w),d4 ;cos ertek
move.w (a1,d5.w),d5 ;sin ertek
move.w d0,d2 ;c1
move.w d1,d3 ;c2
muls d4,d0 ;c1*cos(c0angle)
muls d5,d1 ;c2*sin(c0angle)
muls d4,d3 ;c2*cos(c0angle)
muls d5,d2 ;c1*sin(c0angle)
sub.l d1,d0 ;c1*cos(c0angle)-c2*sin(c0angle)
add.l d2,d3 ;c2*cos(c0angle)+c1*sin(c0angle)
add.l d0,d0
add.l d3,d3
swap d0 ;uj c1
swap d3 ;uj c2
move.w d6,d1
rts
;********************* change coordinates **********************
chcor tst.w lass
bmi kell
subq.w #1,lass
rts
kell moveq #0,d6
moveq #[16*3]-1,d7 ;pont x,y,z
lea coords0(pc),a0
move.l nextcor(pc),a1
cv4 cmpm.w (a0)+,(a1)+
beq cv1
ble cv2
addq.w #5,-2(a0)
bra cv3
cv2 subq.w #5,-2(a0)
cv3 addq.w #1,d6
cv1 dbf d7,cv4
tst.w d6
bne nem
move.w #50,lass
add.l #[[16*3]*2],nextcor ;points x,y,z word !!!!
addq.w #1,obj
dik cmp.w #5,obj
bne nem
cmp.w #5,dik+2
bne nb2
addq.w #1,dik+2
nb2 clr.w obj
move.l #coords1,nextcor
nem rts
wait btst #$e,2(a6) ;waitblitter
bne wait
rts
code movem.l d0-d7/a1-a6,-(a0)
copper dc.w $100,$200,$8e,$2c81,$90,$2cc1,$92,$38,$94,$d0
dc.w $120,0,$122,0,$124,0,$126,0,$128,0,$12a,0,$12c,0,$12e,0
dc.w $130,0,$132,0,$134,0,$136,0,$138,0,$13a,0,$13c,0,$13e,0
dc.w $180,0,$108,$28,$10a,$28
copcol dc.w $182,$44f,$184,$11f,$186,$33f
dc.w $e0,3,$e4,3,$e2
copscr dc.w 0,$e6,$28
dc.w $3001,$fffe,$100,$2200,$180,$ff0,$3101,$fffe,$180,0
dc.w $f001,$fffe,$100,$200,$180,$ff0,$f101,$fffe,$180,0
dc.w $ffff,$fffe
;!!!!!!!!!!!!!!!!!!!! LADO ! Az adatok a kovetkezok : !!!!!!!!!!
;!!!!!!!!! **** METAMORF KOCKA (6 fazis) ****
;!!!!!!!!!
;!!!!!!!!! addx= 2 , addy= 2 , addz= 0
;!!!!!!!!! kiindulas: addx= 0 , addy= 0 , addz= 0
;!!!!!!!!! zoom= 650
;!!!!!!!!! 14 db lap, 16 db pont (!!!! 2 raszter alatt fut le !!!)
;!!!!!!!!! copcol: 182=$44f , 184=$11f , 186=$33f
;!!!!!!!!!
;!!!!!!!!! Csak a koordinatak modosulnak !!!!!!!!!!!!!!!!!!!!!!!
;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
coords0 dc.w 150,-150,150 ;0. pont
dc.w 150,-50,150 ;1.
dc.w -150,-50,150 ;2.
dc.w -150,-150,150 ;3.
dc.w 150,-150,-150 ;4.
dc.w 150,-50,-150 ;5.
dc.w -150,-50,-150 ;6.
dc.w -150,-150,-150 ;7.
dc.w 150,50,150 ;8.
dc.w 150,150,150 ;9.
dc.w -150,150,150 ;10.
dc.w -150,50,150 ;11.
dc.w 150,50,-150 ;12.
dc.w 150,150,-150 ;13.
dc.w -150,150,-150 ;14.
dc.w -150,50,-150 ;15.
coords1 dc.w 150,-150,150 ;0. pont
dc.w 150,-50,150 ;1.
dc.w -150,-50,150 ;2.
dc.w -150,-150,150 ;3.
dc.w 150,-150,-150 ;4.
dc.w 150,-50,-150 ;5.
dc.w -150,-50,-150 ;6.
dc.w -150,-150,-150 ;7.
dc.w 150,50,150 ;8.
dc.w 150,150,150 ;9.
dc.w -150,150,150 ;10.
dc.w -150,50,150 ;11.
dc.w 150,50,-150 ;12.
dc.w 150,150,-150 ;13.
dc.w -150,150,-150 ;14.
dc.w -150,50,-150 ;15.
coords2 dc.w 50,-150,50 ;0. pont
dc.w 150,-50,150 ;1.
dc.w -150,-50,150 ;2.
dc.w -50,-150,50 ;3.
dc.w 50,-150,-50 ;4.
dc.w 150,-50,-150 ;5.
dc.w -150,-50,-150 ;6.
dc.w -50,-150,-50 ;7.
dc.w 150,50,150 ;8.
dc.w 50,150,50 ;9.
dc.w -50,150,50 ;10.
dc.w -150,50,150 ;11.
dc.w 150,50,-150 ;12.
dc.w 50,150,-50 ;13.
dc.w -50,150,-50 ;14.
dc.w -150,50,-150 ;15.
coords3 dc.w 15,-80,55 ;0. pont
dc.w 25,-40,60 ;1.
dc.w -40,-50,90 ;2.
dc.w -30,-180,30 ;3.
dc.w 15,-80,-55 ;4.
dc.w 25,-40,-60 ;5.
dc.w -40,-50,-90 ;6.
dc.w -30,-180,-30 ;7.
dc.w 50,50,70 ;8.
dc.w 20,160,50 ;9.
dc.w -30,180,50 ;10.
dc.w -50,50,120 ;11.
dc.w 50,50,-70 ;12.
dc.w 20,160,-50 ;13.
dc.w -30,180,-50 ;14.
dc.w -50,50,-120 ;15.
coords4 dc.w 50,-150,90 ;0. pont
dc.w 100,-50,90 ;1.
dc.w -100,-150,90 ;2.
dc.w -50,-200,90 ;3.
dc.w 50,-150,-90 ;4.
dc.w 100,-50,-90 ;5.
dc.w -100,-150,-90 ;6.
dc.w -50,-200,-90 ;7.
dc.w 100,50,90 ;8.
dc.w 80,200,90 ;9.
dc.w -50,150,90 ;10.
dc.w -100,100,90 ;11.
dc.w 100,50,-90 ;12.
dc.w 80,200,-90 ;13.
dc.w -50,150,-90 ;14.
dc.w -100,100,-90 ;15.
coords5 dc.w 50,-150,50 ;0. pont
dc.w 100,-50,100 ;1.
dc.w -100,-50,100 ;2.
dc.w -50,-150,50 ;3.
dc.w 50,-150,-50 ;4.
dc.w 100,-50,-100 ;5.
dc.w -100,-50,-100 ;6.
dc.w -50,-150,-50 ;7.
dc.w 150,50,150 ;8.
dc.w 50,150,50 ;9.
dc.w -50,150,50 ;10.
dc.w -150,50,150 ;11.
dc.w 150,50,-150 ;12.
dc.w 50,150,-50 ;13.
dc.w -50,150,-50 ;14.
dc.w -150,50,-150 ;15.
coords6 dc.w 100,-200,100 ;0. pont
dc.w 50,-120,50 ;1.
dc.w -50,-120,50 ;2.
dc.w -100,-200,100 ;3.
dc.w 100,-200,-100 ;4.
dc.w 50,-120,-50 ;5.
dc.w -50,-120,-50 ;6.
dc.w -100,-200,-100 ;7.
dc.w 150,50,150 ;8.
dc.w 80,150,80 ;9.
dc.w -80,150,80 ;10.
dc.w -150,50,150 ;11.
dc.w 150,50,-150 ;12.
dc.w 80,150,-80 ;13.
dc.w -80,150,-80 ;14.
dc.w -150,50,-150 ;15.
meghat dc.w 0*4,1*4,2*4,3*4 ;1. lap
dc.w 4*4,0*4,3*4,7*4 ;2.
dc.w 4*4,7*4,6*4,5*4 ;3.
dc.w 0*4,4*4,5*4,1*4 ;4.
dc.w 3*4,2*4,6*4,7*4 ;5.
dc.w 1*4,8*4,11*4,2*4 ;6.
dc.w 5*4,6*4,15*4,12*4 ;7.
dc.w 1*4,5*4,12*4,8*4;8.
dc.w 2*4,11*4,15*4,6*4 ;9.
dc.w 8*4,9*4,10*4,11*4 ;10.
dc.w 11*4,10*4,14*4,15*4 ;11.
dc.w 12*4,15*4,14*4,13*4 ;12.
dc.w 13*4,14*4,10*4,9*4 ;13.
dc.w 8*4,12*4,13*4,9*4 ;14.
;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
addx dc.w 0
addy dc.w 0 ;yangle
addz dc.w 0 ;zangle
wor dc.w 0,0
erno dc.l $38000 ;kepernyo
plc blk.l 6,0
null blk.l 16,0
row blk.w $d2,0
nextcor dc.l coords2
lass dc.w 30
obj dc.w 0
cleen blk.l 500,0
sinus incbin "Coleccion_Sources1:Sources/Vectores/raytr.dat"
tarol2 blk.b 40,0
tarolo blk.b 100,0